AWS CloudFront
https://gyazo.com/8fd34ef00bcb346118d0eef6901bc8ef
#CDN
概要
オリジンとなるバックエンドを指定する
ELB、EC2、S3、オンプレなど
オンプレのシステムがCloudFrontだけ使うみたいなのもできる
動画のストリーミング配信とかも勿論できる
AWS Shieldが自動で付与されているのでddosにも一定の効果が期待できる
また毎月最初の1tb、1000万リクエストまでは無料だから個人開発では余程のことがなければ無料で乗り切れる
エッジには料金が高いエッジと安いエッジとがあり、料金クラスを設定することで高いエッジからはコンテンツを配信しないと言った制御が出来る
まぁ個人開発とか動画データでも扱わない限り、デフォで何もしないで良い(どちらのクラスも使う)
APIGateway
AWS API Gatewayをオリジンに指定することも出来る
これでキャッシュもできるしddos対策にもなる
https://www.blog.danishi.net/2021/12/05/post-5536/
そもそもapigatewayでは内部で暗黙的にcfが使われているらしい
SPAとバックエンドapiとを同じドメインにできる
CORS回避
標準ログ
https://gyazo.com/d90e58537754fa9eab519e8b0b5e9ff7
Athenaでクエリ流してアクセス解析とか出来る
code:sql
SELECT SUM(bytes) AS total_bytes
FROM cloudfront_logs
WHERE "date" BETWEEN DATE '2018-06-09' AND DATE '2018-06-11'
LIMIT 100;
日毎のコンテンツ配信量
CloudFrontイベント
Viewer request
リクエストが最初に閲覧者から届いた時
Origin request
オリジンへのリクエウトを転送する時
Viewer response
オリジンからの応答を受ける時
Origin response
閲覧者に応答する前
https://gyazo.com/4cf35d11b9502d897f0d142ae4fcdf55
lambda@edge
CloudFrontで実行できるAWS Lambda
CloudFrontイベントからトリガーできる
ユーザーに近いのでオリジンよりも早くレスポンスを返せる
普通にLambdaを作って対象のCDNリージョンでのイベントをトリガーにすると、それがlambda@edgeと言う話
lambda@edgeのユースケース
エッジロケーション(地域)に応じて表示させるコンテンツを変えたい
User-Agentなどに応じて取得するコンテンツを変えたい
アクセス元のIPアドレスによって表示させるコンテンツを変えたい
開発環境に、アクセス元IPが自社でない場合のみBasic認証を導入したい
実際に叩かれるURLと、S3などから実際に取得する資源のURIを変更したい